import { post } from "@/api/request";

/**
 * 目录权限管理控制器 / 目录权限管理控制器根据目录ID、业务类型查询目录及权限人员信息
 * @param {object} data
 * @param {number} [data.businessId] 目录id
 * @param {string} [data.businessType] 类型 可选值: ATTACH_DIRECTORY, INSTITUTIONAL
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<array<DirectoryPower页面展示实体>>}
 * @author 肖玮
 */
export function managementDirectoryPowerDetail(data, config) {
  return post("/management/directoryPower/detail", data, config);
}

/**
 * 目录权限管理控制器 / 目录权限管理控制器权限设置
 * @param {object} data
 * @param {array<DirectoryPower传输实体>} data.list list
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<DirectoryPower页面展示实体>}
 * @author 肖玮
 */
export function managementDirectoryPowerSetting(data, config) {
  return post("/management/directoryPower/setting", data, config);
}

/**
 * 目录权限管理控制器 / 目录权限管理控制器用户列表
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<array<目录权限用户部门展示实体>>}
 * @author 肖玮
 */
export function managementDirectoryPowerUserList(config) {
  return post("/management/directoryPower/userList", config);
}

/**
 * @typedef {object} 目录权限用户部门展示实体 目录权限用户部门展示实体
 * @property {string} id 部门id
 * @property {boolean} isDepartment 是否是部门
 * @property {string} name 部门名称
 * @property {string} parentId 上级部门id
 * @description 目录权限用户部门展示实体
 */

/**
 * @typedef {object} DirectoryPower传输实体 传输实体
 * @property {number} businessId 业务ID
 * @property {string} businessType 业务类型 可选值: ATTACH_DIRECTORY, INSTITUTIONAL
 * @property {array<string>} directoryPowerList 权限
 * @property {boolean} isContainChildren 是否包含子节点
 * @property {number} userId 人员ID
 * @description 传输实体
 */

/**
 * @typedef {object} DirectoryPower页面展示实体 页面展示实体
 * @property {number} businessId 业务ID
 * @property {string} businessType 类型 可选值: ATTACH_DIRECTORY, INSTITUTIONAL
 * @property {array<string>} directoryPowerList 权限集合
 * @property {boolean} isContainChildren 是否包含子目录
 * @property {number} userId 人员ID
 * @description 页面展示实体
 */
